/**
 * 
 * 给定一个只包括'('，')'，'{'，'}'，'['，']'  的字符串，判断字符串是否有效。
 * 有效字符串需满足：
 * 1、左括号必须用相同类型的右括号闭合。
 * 2、左括号必须以正确的顺序闭合。
 * 意空字符串可被认为是有效字符串。
 * @param {string} s
 * @return {boolean}
 */
// let stack = [];
// if (arr.length % 2 !== 0) return false;
// let map = {
//     "(": ")",
//     "{": "}",
//     "[": "]"
// }
// for (let i = 0; i < arr.length; i++) {
//     if (!map[arr[i]]) {
//         stack.push(arr[i]);
//     } else {
//         if (map[stack[stack.length - 1]] !== arr[i]) {
//             return false;
//         }
//         stack.pop();
//     }
// }
// return stack.length == 0;


var isValid = function (s) {
    let map = {
        '(': ')',
        '{': '}',
        '[': ']'
    }
    let stack = [];
    let len = s.length;
    if (len % 2 !== 0) return false
    for (let i of s) {
        if (i in map) {
            stack.push(i)
        } else {
            if (i !== map[stack.pop()]) return false
        }
    }
    return !stack.length
};